//package com.sky.Task;
//
//
//import com.sky.entity.Orders;
//import com.sky.mapper.OrderMapper;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.scheduling.annotation.Scheduled;
//import org.springframework.stereotype.Component;
//
//import java.sql.Time;
//import java.time.LocalDateTime;
//import java.util.List;
//
///**
// * 自定义定时任务，实现订单状态定时处理
// *
// * - 通过定时任务每分钟检查一次是否存在支付超时订单（下单后超过15分钟仍未支付则判定为支付超时订单），如果存在则修改订单状态为“已取消”
// * - 通过定时任务每天凌晨1点检查一次是否存在“派送中”的订单，如果存在则修改订单状态为“已完成”
// */
//@Component
//@Slf4j
//public class OrderTask {
//
//    @Autowired
//    private OrderMapper orderMapper;
//
//    /**
//     * 处理支付超时订单
//     */
//    //每分钟执行一次
//    @Scheduled(cron = "0/1* * * * ?")
//    public  void  processTimeOutOrder(){
//
//        log.info("处理超时订单");
//        //2.查出超过15分钟的订单 1.查出所有的判断时间 2.带上15分组之前的时间，数据库查
//
//        LocalDateTime localDateTime = LocalDateTime.now().plusMinutes(-15);
//        List<Orders> list= orderMapper.getOrdersByStatusAndOrdersTime(Orders.PENDING_PAYMENT,localDateTime);
//        //select  * from orders where status =待支付 and order_time <当前时间-15分钟
//        //3.更新状态
//        for (Orders orders : list) {
//            orders.setStatus(Orders.CANCELLED);
//            orders.setCancelReason("订单超时，自动取消");
//            orders.setCancelTime(LocalDateTime.now());
//
//            orderMapper.update(orders);
//        }
//
//
//    }
////    //凌晨一点执行
////    @Scheduled(cron = "0 0 1 * * ? ")
////    public  void   processTimeOutOrder1(){
////        log.info("处理修改订单");
////        //select * from orders where
////        LocalDateTime localDateTime = LocalDateTime.now().plusMinutes(-60);
////        List<Orders> list= orderMapper.getStatus(Orders.DELIVERY_IN_PROGRESS,localDateTime);
////    //更新状态
////
////        for (Orders orders : list) {
////
////             orders.setStatus(Orders.COMPLETED);
////             orders.setCancelReason("修改订单状态为已完成");
////             orders.setCancelTime(LocalDateTime.now());
////             orderMapper.update(orders);
////         }
////        }
//
//
//
//}
